package com.rw.engine.frequency.interceptor;

import java.util.concurrent.TimeUnit;

/**
 * 由于频率限制器需要缓存实现
 * 所以需要提供此接口
 */
public interface FrequencyCache {
    /**
     * 获取缓存值
     *
     * @param token key值
     * @return 缓存的值，如果没有对应的值，请返回null
     */
    Integer getValue(String token);

    /**
     * 设置缓存值
     *
     * @param token        key值
     * @param value        value值
     * @param survivalTime 过期时间
     * @param timeUnit     过期时间的时间单位
     */
    void setValue(String token, int value, long survivalTime, TimeUnit timeUnit);

    /**
     * 设置缓存值，并且不改变过期时间
     * 如果没有对应的缓存值，请无视本次方法调用，不要抛出异常
     *
     * @param token key值
     * @param value value值
     */
    void setValue(String token, int value);
}
